数据集传输

除了公共数据集之外,支持用户上传、维护自己的私有数据集。小于500M的数据集可以在网页端操作,大于500M的,虽然也可以多次上传,但强烈建议使用这里的方法。

方法一

由于数据集实质是共享存储上的目录,通过docker的挂载卷,在任务内呈现,那么,也就可以通过启动debug任务的方式,对这个目录进行读写。注意,要求在启动前先在网页端操作挂载该数据集。

debug有两种方式,其中之一是ssh调试,即在平台上开启一个远程虚拟主机,然后可以ssh登录(使用秘钥)。有很多ssh工具支持上传、下载远程主机的文件,同样适用于这里。如scp,sftp。

1、启动一个与数据集关联的0卡debug任务:选择 项目——数据集——编辑参数

在打开的界面中点击 “添加数据集”,选择需要修改的数据集(即上传内容拟存放目录)。

2、选择 “新建任务”

在打开界面中,GPU类型选择debug,GPU个数选择0,启动命令 sleep 3h (运行3小时后结束),保存并运行任务

等待任务变为运行状态后,点击查看,在打开界面中有如何通过ssh登录的说明

上图示例中,登录的ip地址为202.38.95.226,端口为13327

若使用powershell/bash等命令行登录,直接使用上述说明。

若使用xshell工具登录,则输入命令 ssh root@202.38.95.226 13327

弹出窗口中,Public key选项 通过浏览,选择下载到本地的key文件后登录

3、开始上传

既然能登录,也就可以使用scp命令传输,如

image-20230428170923851

就完成了将本地文件上传到bitahub中名为test_dataset3的私有数据集下。

或者使用sftp工具:

image-20230428171428063

这种方式比较推荐:1)有可视化操作;2)可以支持断点续传。

总结下方法一:

(1)借助ssh的能力进行上传;

(2)需要在平台上开启debug任务;

(3)因为debug任务有时长限制,一次只能传3小时。

如果你的数据集在3小时内传不完,那么:

(1)断点续传

(2)尝试下面的方法二;

(3)使用账户关联邮箱,发邮件到 icpadmin@iai.ustc.edu.cn 请管理员帮您开一个更长时限的容器。只在工作日响应,且非实时。

方法二

如果你的数据集比较大,你有必要了解下rclone(https://rclone.org/ )。

rclone可以帮你同步远程主机的数据(双向的),支持多种操作系统(windows、mac、linux),多种协议(sftp、ftp等),实乃居家必备之良品。

1、安装rclone

根据系统类型,按照这里的说明(https://rclone.org/downloads/ )进行安装。

2、配置

如果你是在平台上创建了debug任务,那么使用的协议是sftp。

参考这里进行配置:https://rclone.org/sftp/

注意,在配置时不输入密码,而是秘钥文件路径。

配置完成后,可以运行:rclone lsd $remote_name:/ 查看远程主机目录。

image-20230428180421220

3、拷贝

参考:https://rclone.org/commands/rclone_copy/

rclone copy -P source:sourcepath dest:destpath

类似这样:

image-20230428190545835

上面的例子中,将本地的路径,拷贝到一个名为“myssh"的远程主机中的路径(参考前一步的配置),使用-P选项来显示进度,使用了--transfers 10来指定同时启动10个线程进行传输。

你可以探索更多的设置和命令(如rclone sync)。

4、使用ftp作为中介

假如使用上述方法进行传输较慢,那么可以借助ftp进行中转。

我们此前提供了下列ftp:

地址:202.38.95.226 端口号:10011 用户名:ftpuser 密码:ts66ch

它也依然可用,而且在内网有另一个地址:

地址:10.10.8.17 端口号:10021

这两个地址是同一个ftp服务器,只是内外网IP、端口不同而已。

有下列的方法可供参考:

(1)先将数据传输到ftp

(2)启动debug任务

(3)在debug任务的容器(远程主机)中,利用ftp命令获取文件(注意要使用内网地址)。此时,因为机器都在机房内网,预期传输速率是较高的。

如果你觉得ftp比较难用,也同样可以借助rclone工具。

同样地,需要进行安装(要使用新版的rclone)、配置(选择ftp协议)

如:

wget -c https://downloads.rclone.org/v1.62.2/rclone-v1.62.2-linux-amd64.deb
dpkg -i rclone-v1.62.2-linux-amd64.deb
# 完成安装
rclone config
# ...根据提示输入
# 假设完成了一个名叫myftp的配置
# 输出如下:
Configuration complete.
Options:
- type: ftp
- host: 10.10.8.17
- user: ftpuser
- port: 10021
- pass: *** ENCRYPTED ***
Keep this "myftp" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> 

Current remotes:

Name                 Type
====                 ====
myftp                ftp

# 使用 rclone lsd命令试着查看下目录
rclone lsd myftp:/
# 这里应该要列出ftp上的目录

然后就可以使用rclone copy 进行数据拷贝了。

注意:ftp服务器是对所有用户开放可见的,并且会定期清理。

results matching ""

    No results matching ""